namespace Core.Contracts.Interfaces
{
    using Enums;

    public interface ISlot
    {
        /// <summary>
        /// Obtains or defines the slot type
        /// </summary>
        SlotGroupsEnum SlotGroup { get; set; }
        /// <summary>
        /// Obtains the type of modules fittable in the slot
        /// </summary>
        SlotTypesEnum Fittable { get; }
        /// <summary>
        /// Obtains the sizes of modules
        /// </summary>
        SizesEnum Sizes { get; }
        /// <summary>
        /// Obtains or defines the fitted module
        /// </summary>
        IModule FittedModule { get; set; }
        /// <summary>
        /// Determines if the slot is occupied
        /// </summary>
        bool HasModule { get; }
        /// <summary>
        /// Obtains the sorting order
        /// </summary>
        ushort SortOrder { get; }
    }
}